1. Field of the Invention
This invention relates to the field of information communication and processing. In particular, the present invention relates to a system and method for efficiently communicating and processing information in a multithread (e.g., multiprocessor) system.
2. Related Art
Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data in most areas of business, science, education and entertainment. Frequently, advanced computer applications are needed to realize these advantageous results and these advanced applications require increasingly powerful computer devices. The demand for ever greater functionality and convenience has resulted in a need for increased performance in smaller packages. One approach to providing increased capabilities is to utilize multiple threads (e.g., multiprocessors) to communicate and process information. However, utilizing multiple threads often gives rise to number of problems such as inefficient task distribution and coherency management difficulties between the parallel threads.
The communication and processing of information usually requires the maintenance of a particular order in performing tasks. Numerous electronic devices include processors that operate by executing programs comprising a series of instructions. These programs and their series of instructions, are collectively referred to as software. Software instructions include directions that guide processor device functions in the performance of useful tasks. If a predetermined order is not maintained during the communication or processing of information it often results in erroneous and/or incomprehensible results.
Traditionally the tasks are performed in a serial manner in which one operation is performed and then the next operation is performed one after another in a linear fashion. A purely sequential system typically requires a lot more time to complete a series of operations since one operation is not performed until the preceding operation is completed. The utility a processor device provides often depends upon the speed and efficiency at which instructions included in a software program are executed. In a serial system the assignment of tasks is rigidly predetermined based upon the sequential order of the tasks. This rigidly predetermined sequence does not permit parallel operations and associated time savings.
Numerous applications typically have operations that are not dependent upon the results of earlier processes. One conventional attempt at increasing computer performance involves the implementation of multiprocessor systems. Multiprocessor systems have multiple processors that are capable of operating independently of one another and performing parallel operations. One processor is capable of performing tasks (such as processing information) while another processor is also performing tasks. The parallel processing of information has the potential to reduce the overall time it takes to complete a number of tasks since more than one task can potentially be performed at the same time. However, even though the processors are capable of operating independently and performing tasks at the same time, some operations require results from other operations before beginning their allotted tasks. There is still a need for efficient task distribution and coherency management between the parallel processors.
Systems that are capable of parallel operations typically involve the commitment of significant resources. For example, systems capable of parallel processing typically have multiple processors that are relatively expensive or systems that provide parallel communications have duplicative communication medium (e.g. wires, fiber optic cables, etc.) between communication points. In addition, systems that provide parallel operations typically require complicated and extensive support resources. The commitment of significant resources in systems that are capable of providing parallel operations increases the need for efficient task distribution and coherency management between the parallel threads. Inefficient assignment of tasks between parallel resources usually results in wasting resource capabilities. If a disproportionate amount of the tasks are assigned to a busy thread while other threads are idle then the idle resource capabilities are not contributing to speeding up the overall operation rate. It is also a waste of valuable resources if a disproportionate amount of the tasks are assigned to a slow thread while other threads capable of processing the information faster are not sufficiently utilized.
Thus, what is required is a solution that facilitates efficient task assignment and coherency management for systems that provide the advantages of multi-thread operations with respect to increasing performance. The present invention provides a novel solution to the above problems.